package com.jie.util;


import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
/**
 * Created by XU on 2018/8/3.
 * 使用java发送邮箱 并附带表格下载
 *
 */
public class EmailUtil {

    public static String from = "xxx_qz@126.com"; // 发件人邮箱地址
    public static String user = "xxx_qz@126.com"; // 发件人称号，同邮箱地址
    public static String password = "xxxqz126"; // 发件人邮箱客户端授权码
    public static String host = "smtp.126.com"; // 发送服务器
    public static String fileName ="表格测试.xls";//文件别名
    public static String fileAddress ="E:/test.xls";//文件地址
    /**
     *
     * @param to
     * @param text
     * @param title
     */
	/* 发送验证信息的邮件 */
    public static boolean sendMail(String to, String text, String title) {
        Properties props = new Properties();
        props.setProperty("mail.smtp.host", host); // 设置发送邮件的邮件服务器的属性（这里使用网易的smtp服务器）
        props.put("mail.smtp.host", host); // 需要经过授权，也就是有户名和密码的校验，这样才能通过验证（一定要有这一条）
        props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session
        Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中在console处显示过程信息，供调试使
        // 用（你可以在控制台（console)上看到发送邮件的过程）
        session.setDebug(true); // 用session为参数定义消息对象
        MimeMessage message = new MimeMessage(session); // 加载发件人地址
        try {
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 加载收件人地址
            message.setSubject(title); // 加载标题
            Multipart multipart = new MimeMultipart(); // 向multipart对象中添加邮件的各个部分内容，包括文本内容和附件
            BodyPart contentPart = new MimeBodyPart(); // 设置邮件的文本内容
            contentPart.setContent(text, "text/html;charset=utf-8");
            multipart.addBodyPart(contentPart);

            MimeBodyPart attch1 = new MimeBodyPart();
            //把文件，添加到附件1中
            //数据源
            DataSource ds1 = new FileDataSource(new File(fileAddress));
            //数据处理器
            DataHandler dh1 = new DataHandler(ds1);
            //设置第一个附件的数据
            attch1.setDataHandler(dh1);
            //设置第一个附件的文件名
            try {
                attch1.setFileName(MimeUtility.encodeText(fileName));//设置编码格式  防止中文乱码
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

            multipart.addBodyPart(attch1);


            message.setContent(multipart);
            message.saveChanges(); // 保存变化
            Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱
            transport.connect(host, user, password); // 把邮件发送出去
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    public static void main(String[] args) {       // 做测试用
        EmailUtil ds = new EmailUtil();
        String to = "1750370040@qq.com";           // 收件人邮箱地址
        String text = "你好，</br><h1>老鸨，</h1></br>无需回复。";//内容主体
        String title = "测试邮件";//邮件标题
        ds.sendMail(to, text, title);
        System.out.println("发送成功");
    }
}